#include <bits/stdc++.h>
using namespace std;
struct zy{
    int lft,rgt;
}lr[5005];
bool cmp(zy x,zy y){
    if(x.lft!=y.lft){
        return x.lft<=y.lft;
    }
    return x.rgt<=y.rgt;
}
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    ios::sync_with_stdio(false);
    int t;
    cin>>t;
    double s[5005]={0},cas[5005]={0},p[5005]={0};
    for(int k=1;k<=t;k++){
        int n;
        double m,l,xv;
        cin>>n>>m>>l>>xv;
        double d,v,a;
        for(int i=1;i<=n;i++){
            cin>>d>>v>>a;
            if(v<=xv&&a<=0){
                s[i]=-1;
            }
            else if(v>xv&&a>0){
                s[i]=l-d;
            }
            else if(v>xv&&a<=0){
                if(a!=0){
                    s[i]=(xv*xv-v*v)/(2.0*a);
                    s[i]=s[i]/1.0;
                }
                else{
                    s[i]=l-d;
                }
            }
            else {
                s[i]=(xv*xv-v*v)/(2.0*a);
                int qx=int(s[i]);
                if(qx=s[i]/1.0){
                    d=s[i];
                }
                else d=s[i]/1.0+1;
                s[i]=l-d;
            }
            cas[i]=d;
        }
        for(int i=1;i<=m;i++){
            cin>>p[i];
        }
        for(int i=1;i<=n;i++){
            lr[i].lft=-1;
            lr[i].rgt=-1;
        }
        int cnt=0;
        for(int i=1;i<=n;i++){
            int f=1;
            for(int j=1;j<=m;j++){
                if(cas[i]<=p[j]&&p[j]<=cas[i]+s[i]){
                    if(f==1){
                        cnt++;
                        lr[i].lft=j;
                        f=0;
                    }
                    lr[i].rgt=j;
                }
            }
        }
        cout<<cnt<<" ";
        sort(lr+1,lr+n+1,cmp);
        int ans=1;
        for(int i=2;i<=n;i++){
            if(lr[i].lft!=-1){
                if(lr[i].lft<=lr[i-1].rgt){
                    lr[i].rgt=lr[i-1].rgt;
                }else{
                    ans++;
                }
            }
        }
        cout<<m-ans<<endl;
    }
    return 0;
}
